<script>
    const arr = [
  { 'id': '29', 'pid': '',     'name': '总裁办' },
  { 'id': '2c', 'pid': '',     'name': '财务部' },
  { 'id': '2d', 'pid': '2c',   'name': '财务核算部'},
  { 'id': '2f', 'pid': '2c',   'name': '薪资管理部'},
  { 'id': 'd2', 'pid': '',     'name': '技术部'},
  { 'id': 'd3', 'pid': 'd2',   'name': 'Java研发部'}
]
function array2Tree(arr, pid) {
  // 先找出第一级对象,
  const tree = arr.filter(item => item.pid === pid)
  // 再遍历每个对象再判断有没有children
  tree.forEach(item => {
    //如果有children就添加
    item.children = array2Tree(arr,item.id)
  })
  return tree
}
console.log(array2Tree(arr,''))
</script>